The ASRS08 assembler supports the RS08 series of micropro- cessors. Processor specific definition files are included for the KA2(KA1), KA8(KA4), KB8( KB2, KB4, and KB6), LA8, and LE4 variations of peripheral options with the RS08 core. RS08 REGISTER SET The following is a list of the RS08 registers used by ASRS08: a - the accumulator x - the index register RS08 ARGUMENT SYNTAX a 8 bit accumulator register x 8 bit index register #opr8i 8 bit immediate value (#)n 3 bit data M is a memory address opr16a 16 bit address opr8a 8 bit address opr5a 5 bit address (0 <= opra5 <= 31) opra4 4 bit address (0 <= opra4 <= 15) Force the opr8a address form using the * prefix Force the opr5a or opr4a form using the <* prefix rel -128 to +127 relative address ,x indexed addressing D[X] indexed addressing The terms opr8i, n, opr16a, opr8a, opra5, opra4, and rel may be expressions. Note that not all addressing modes are valid with every in- struction. Refer to the RS08 reference manual for more details.
RS08 INSTRUCTIONS The following tables list the mnemonics and arguments recog- nized by the ASRS08 assembler. The operational description of the instructions may contain one or more of the following forms: A is a register X is a register C is the Carry Bit n is a 3 Bit Value # is an immediate value (arg) - 'The Contents Of' arg (Mx) - 'The Contents Of M Addressed By (x)' Load and Store Instructions lda #opr8i A <- # lda opr8a A <- (M) lda opra5 A <- (M) lda ,x A <- (Mx) lda D[X] A <- (Mx) ldx #opr8i X <- # ldx opr8a X <- (M) ldx ,x X <- (Mx) ldx D[X] X <- (Mx) sta opr8a (M) <- (A) sta opr5a (M) <- (A) sta ,x (Mx) <- (A) sta D[X] (Mx) <- (A) stx opr8a (M) <- (X) tax X <- (A) txa A <- (X) BSET, BCLR, and Move Instructions bclr n,opr8a Bit n of (M) <- 0 bclr n,x Bit n of (Mx) <- 0 bclr n,D[X] Bit n of (Mx) <- 0 bset n,opr8a Bit n of (M) <- 1 bset n,x Bit n of (Mx) <- 1 bset n,D[X] Bit n of (Mx) <- 1 mov opr8a,opr8a (M)dst <- (M)src mov #opr8i,opr8a (M) <- # mov ,x,opr8a (M) <- (Mx) mov D[X],opr8a (M) <- (Mx) mov opr8a,D[X] (Mx) <- (M) mov #opr8i,D[X] (Mx) <- # Add and Subtract Instructions adc #opr8i A <- (A) + (C) + # adc opr8a A <- (A) + (C) + (M) adc ,x A <- (A) + (C) + (Mx) adc D[X] A <- (A) + (C) + (Mx) adc x A <- (A) + (C) + (x) adcx A <- (A) + (C) + (x) add #opr8i A <- (A) + # add opr8a A <- (A) + (M) add opr4a A <- (A) + (M) add ,x A <- (A) + (Mx) add D[X] A <- (A) + (Mx) add x A <- (A) + (x) addx A <- (A) + (x) sbc #opr8i A <- (A) - (C) - # sbc opr8a A <- (A) - (C) - (M) sbc ,x A <- (A) - (C) - (Mx) sbc D[X] A <- (A) - (C) - (Mx) sbc x A <- (A) - (C) - (x) sbcx A <- (A) - (C) - (x) sub #opr8i A <- (A) - # sub opr8a A <- (A) - (M) sub opr4a A <- (A) - (M) sub ,x A <- (A) - (Mx) sub D[X] A <- (A) - (Mx) sub x A <- (A) - (x) subx A <- (A) - (x) Other Arithmetic Instructions inc opr8a (M) <- (M) + 1 inc opr4a (M) <- (M) + 1 inc ,x (Mx) <- (Mx) + 1 inc D[X] (Mx) <- (Mx) + 1 inc a A <- (A) + 1 inc x X <- (X) + 1 inca A <- (A) + 1 incx X <- (X) + 1 dec opr8a (M) <- (M) - 1 dec opr4a (M) <- (M) - 1 dec ,x (Mx) <- (Mx) - 1 dec D[X] (Mx) <- (Mx) - 1 dec a A <- (A) - 1 dec x X <- (X) - 1 deca A <- (A) - 1 decx X <- (X) - 1 clr opr8a (M) <- 0 clr opr4a (M) <- 0 clr ,x (Mx) <- 0 clr D[X] (Mx) <- 0 clr a A <- 0 clr x X <- 0 clra A <- 0 clrx X <- 0 cmp #opr8i (A) - # cmp opr8a (A) - (M) cmp ,x (A) - (Mx) cmp D[X] (A) - (Mx) cmp x (A) - (X) cmpx (A) - (X) tst opr8a (M) - 0 tst ,x (Mx) - 0 tst D[X] (Mx) - 0 tst a (A) - 0 tst x (X) - 0 tsta (A) - 0 tstx (X) - 0 Logical Operation Instructions and #opr8i A <- (A) & # and opr8a A <- (A) & (M) and ,x A <- (A) & (Mx) and D[X] A <- (A) & (Mx) and x A <- (A) & (X) andx A <- (A) & (X) ora #opr8i A <- (A) | # ora opr8a A <- (A) | (M) ora ,x A <- (A) | (Mx) ora D[X] A <- (A) | (Mx) ora x A <- (A) | (X) orax A <- (A) | (X) eor #opr8i A <- (A) ^ # eor opr8a A <- (A) ^ (M) eor ,x A <- (A) ^ (Mx) eor D[X] A <- (A) ^ (Mx) eor x A <- (A) ^ (X) eorx A <- (A) ^ (X) com a A <- ~(A) coma A <- ~(A) Shift and Rotate Instructions asl a C <- (A7) Left Shift (A0) <- 0 asla C <- (A7) Left Shift (A0) <- 0 lsl a C <- (A7) Left Shift (A0) <- 0 lsla C <- (A7) Left Shift (A0) <- 0 lsr a 0 -> (A7) Right Shift (A0) -> C lsra 0 -> (A7) Right Shift (A0) -> C rol a C <- (A7) Left Rotate (A0) <- C rola C <- (A7) Left Rotate (A0) <- C ror a C -> (A7) Right Rotate (A0) -> C rora C -> (A7) Right Rotate (A0) -> C Jump and Branch Instructions jmp opr16a PC <- Adrress bcc rel Branch if Carry Bit Clear bcs rel Branch if Carry Bit Set (blo) beq rel Branch if Zero Bit Set bhs rel Branch if Higher or Same (bcc) blo rel Branch if Lower (bcs) bne rel Branh if Zero Bit Clear bra rel Branch Always brn rel Branch Never Bit Branches and Loop Control Instructions brclr n,opr8a,rel Branch if Bit n of (M) is Clear brclr n,D[X],rel Branch if Bit n of (Mx) is Clear brclr n,x,rel Branch if Bit n of (x) is Clear brset n,opr8a,rel Branch if Bit n of (M) is Set brset n,D[X],rel Branch if Bit n of (Mx) is Set brset n,x,rel Branch if Bit n of (x) is Set cbeqa #opr8i,rel Branch if (A) = # cbeq a,#opr8i,rel Branch if (A) = # cbeq opr8a,rel Branch if (M) = 0 cbeq ,x,rel Branch if (Mx) = 0 cbeq D[X],rel Branch if (Mx) = 0 cbeqx rel Branch if (X) = 0 cbeq x,rel Branch if (X) = 0 dbnz opr8a,rel (M) <- (M) - 1, Branch if (M) != 0 dbnz ,x,rel (Mx) <- (Mx) - 1, Branch if (Mx) != 0 dbnz D[X],rel (Mx) <- (Mx) - 1, Branch if (Mx) != 0 dbnz a,rel A <- (A) - 1, Branch if (A) != 0 dbnza rel A <- (A) - 1, Branch if (A) != 0 dbnz x,rel X <- (X) - 1, Branch if (X) != 0 dbnzx rel X <- (X) - 1, Branch if (X) != 0 Subroutine Related Instructions bsr rel Branch to Subroutine jsr opr16a Jump to Subroutine rts Return from Subroutine sha (A) <--> Shadow PC High sla (A) <--> Shadow PC Low Miscellaneous Instructions nop No Operation sec (C) <- 1 clc (C) <- 0 bgnd Background wait Put MCU into wait mode stop Put MCU into stop mode
... Exit the ASxxxx Documentation